package numerosRomanos;

import javax.swing.JOptionPane;

public class NumerosRomanos {
	/**
	 * Autor yerlin torres
	 * @param args
	 * 
	 *  String[] unDigito : guarda 10 valores de String correspondiente del 0 al 9
	 *  String[] dosDigitos : guarda 10 valores de String correspondiente del 10 al 90
	 *  String[] tresDigitos : guarda 10 valores de String correspondiente del 100 al 900
	 *  String [] cuatroDigitos : guarda 3 valores de String correspondiente del 1000 al 4000
	 *  String[] excepciones : guarda las excepciones de la escala numerica estos son 11 , 12 , 13 ,14 , 15
	 *  int numeroIngreso : ingresa el numero que se decea convertir este numero debe ser entre 0 y 3499
	 *  String numeroRomano : guarda el arreglo que contiene los diferentes numeros
	 *  int divisionEntera : divide el entero ingresado por 10 si y solo si el numero es mayor a 9 y menor a 99
	 *  int divisionEntera2 : divide el entero ingresado por 100 si y solo si el numero es mayor a 99 y menor a 999
	 *  int divisionEntera3 : divide el entero ingresado por 1000 si y solo si el numero es mayor a 999 
	 *  int resto : busca el mod 10 del entero ingresado, si y solo si el numero es mayor a 1 y menor a 99
	 *  int resto2 : busca el mod 100 del entero ingresado, si y solo si el numero es mayor a 99 y menor a 999
	 *  int resto3 : int resto : busca el mod 1000 del entero ingresado, si y solo si el numero es mayor a 999 
	 *  
	        
	        
	       
	        
	       
	 *  
	       
	       
	 */
	public static void main (String []args){
		
		 String[] unDigito = {" ", "i","ii","iii", "iv","v", "vi","vii","viii","ix"};
	        String[] dosDigitos = {"x", "xx", "xxx", "xI", "I", "Ix", "Ixx", "Ixxx", "Ic"};
	       String[] tresDigitos = {"c", "cc", "cc", "cd", "d", "dx", "dxx", "xdxx", "dm"};
	       String [] cuatroDigitos={"m","mm","mmm"};
	        
	        String[] excepciones = {"xi", "xii", "xiii", "xiv", "xv"};
	        String numeroRomano = "";
	        int numeroIngreso=0;
	        
	        do {
				try{
					 numeroIngreso = Integer.parseInt(JOptionPane.showInputDialog("Ingrese un numero (entre 1 a 150)"));
			          if(numeroIngreso>3499 || numeroIngreso<0){
			        	  JOptionPane.showMessageDialog(null, "ingrese valores de entre 1 a 25 o 0 si decea salir");  	        	  
			          }
				}catch(NumberFormatException es){
		            JOptionPane.showMessageDialog(null, "No se puede ingresar letra, ingresa Numero");  
		          
		          }
			}while( numeroIngreso<0 || numeroIngreso > 3499 ); 
	       
	        
	        int divisionEntera =0;
	        int divisionEntera2 =0;
	        int divisionEntera3 =0;
	        int resto = numeroIngreso%10;
	        int resto2 = 0;
	        int resto3 =0;
	        
	        if(numeroIngreso > 10 && numeroIngreso < 16){
	            
	            numeroRomano += excepciones[resto - 1];
	        }else if (numeroIngreso > 9 && numeroIngreso < 99){
	        	divisionEntera =(int)(numeroIngreso/10);
	            numeroRomano += dosDigitos[divisionEntera-1]  + unDigito[resto];
	        }else if (numeroIngreso > 99 && numeroIngreso < 999){
	        	divisionEntera2=(int)(numeroIngreso/100);
	        	resto=numeroIngreso%100;
	        	divisionEntera = (int)(resto/10);
	        	resto2=resto%10;
	        	
	            numeroRomano += tresDigitos [divisionEntera2-1]+ dosDigitos[divisionEntera-1]  + unDigito[resto2 -1];
	        }else if (numeroIngreso > 999 && numeroIngreso < 3500 ){
	        	
	        	divisionEntera3 =(int)(numeroIngreso/1000);
	        	resto3=numeroIngreso%1000;
	        	divisionEntera2=(int)(resto3/100);
	        	resto=resto3%100;
	        	divisionEntera =(int)(resto/10);
	        	resto2=resto%10;
	        	
	        	
	        	
	            numeroRomano += cuatroDigitos[divisionEntera3-1] + tresDigitos [divisionEntera2-1] + dosDigitos[divisionEntera-1]  + unDigito[resto2];
	        
	        }else{
	            
	            numeroRomano += unDigito[resto];
	        }
	        
	        
	        JOptionPane.showMessageDialog(null, numeroIngreso + "  =  " + numeroRomano); 
	        
	        
	}

}
